﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using SisEagle.Common.Code.Utils;


namespace SisEagleBO
{

    /// <summary>
    /// Classe BO: Business Objects
    /// Criador: Rafael da Silva França
    /// Criada em 08/09/2012
    /// Contato: rafael.sfranca@gmail.com
    /// </summary>
    public partial class ControleVendasBO
    {
        #region Singleton
        public UtilsNum _UtilsNum;
        public UtilsNum UtilsNumber
        {
            get
            {
                if (_UtilsNum == null)
                    _UtilsNum = new UtilsNum();

                return _UtilsNum;
            }
        }
        #endregion

        // Atributos
        private SisEagleDO.SisEagleDO objDO = null;
        private StringBuilder strSql = null;

        //Métodos
        /// <summary>
        /// Seleciona todos os registros e retorna um DataSet.
        /// </summary>
        /// <returns>DataSet</returns>
        public DataSet FindAll()
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros com ordenação e retorna um DataSet.
        /// </summary>
        /// <param name="_orderby">campo de ordenação</param>
        /// <returns>DataSet</returns>
        public DataSet FindAll(string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto,  Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros com filtro.
        /// </summary>
        /// <param name="_filtro ("id_campo = 1 AND campo1 = 'texto' OR campo2 LIKE 'r%'")">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindByWhere(string _filtro)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE ( " + _filtro + " ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros com filtro e ordenação.
        /// </summary>
        /// <param name="_filtro ("id_campo = 1 AND campo1 = 'texto' OR campo2 LIKE 'r%'")">filtro da consulta</param>
        /// <param name="_orderby">campo de ordenação</param>
        /// <returns>DataSet</returns>
        public DataSet FindByWhere(string _filtro, string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE ( " + _filtro + " ) ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por CodVenda.
        /// </summary>
        /// <param name="_CodVenda">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_CodVenda(int _CodVenda)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto,  Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.CodVenda =   " + _CodVenda + "  ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por CodVenda.
        /// </summary>
        /// <param name="_CodVenda">filtro da consulta</param>
        /// <param name="_orderby">campo de ordenação</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_CodVenda(int _CodVenda, string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.CodVenda =   " + _CodVenda + "  ) ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por codProduto.
        /// </summary>
        /// <param name="_codProduto">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_codProduto(int _codProduto)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  Produtos.codProduto =   " + _codProduto + "  ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por codProduto.
        /// </summary>
        /// <param name="_codProduto">filtro da consulta</param>
        /// <param name="_orderby">campo de ordenação</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_codProduto(int _codProduto, string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  Produtos.codProduto =   " + _codProduto + "  ) ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por Quantidade.
        /// </summary>
        /// <param name="_Quantidade">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_Quantidade(int _Quantidade)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.Quantidade =   " + _Quantidade + "  ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por Quantidade.
        /// </summary>
        /// <param name="_Quantidade">filtro da consulta</param>
        /// <param name="_orderby">campo de ordenação</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_Quantidade(int _Quantidade, string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.Quantidade =   " + _Quantidade + "  ) ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por ValorUnitarioVenda.
        /// </summary>
        /// <param name="_ValorUnitarioVenda">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_ValorUnitarioVenda(decimal _ValorUnitarioVenda)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.ValorUnitarioVenda =   " + _ValorUnitarioVenda + "  ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por ValorUnitarioVenda.
        /// </summary>
        /// <param name="_ValorUnitarioVenda">filtro da consulta</param>
        /// <param name="_orderby">campo de ordenação</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_ValorUnitarioVenda(decimal _ValorUnitarioVenda, string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto, Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.ValorUnitarioVenda =   " + _ValorUnitarioVenda + "  ) ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }


        /// <summary>
        /// Seleciona todos os registros por CodCarrinhoCompras.
        /// </summary>
        /// <param name="_CodVenda">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_CodCarrinhoCompras(int _CodCarrinhoCompras)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto,  Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.CodCarrinhoCompras =   " + _CodCarrinhoCompras + "  ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Seleciona todos os registros por CodCarrinhoCompras.
        /// </summary>
        /// <param name="_CodVenda">filtro da consulta</param>
        /// <returns>DataSet</returns>
        public DataSet FindBy_CodCarrinhoCompras(int _CodCarrinhoCompras, string _orderby)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" SELECT ");
                // colunas
                strSql.Append(" ControleVendas.CodVenda, Produtos.codProduto, Produtos.NomeProduto,  Produtos.Descricao, ControleVendas.Quantidade, ControleVendas.ValorUnitarioVenda  ");
                strSql.Append(" FROM   ControleVendas INNER JOIN Produtos ON ControleVendas.codProduto = Produtos.CodProduto  ");
                strSql.Append(" WHERE (  ControleVendas.CodCarrinhoCompras =   " + _CodCarrinhoCompras + "  ) ");
                strSql.Append(" ORDER BY " + _orderby);

                objDO = new SisEagleDO.SisEagleDO();

                // executa consulta e retorna um DataSet
                return objDO.GetDataSet(strSql.ToString(), "ControleVendas");
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Insere os registros do banco e retorna o número de linhas afetadas.
        /// </summary>
        /// <param name="_vo">objetos vo do banco</param>
        /// <returns>int</returns>
        public int Insert(SisEagleVO.ControleVendasVO _vo)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" INSERT INTO  ControleVendas  ");
                strSql.Append(" (");
                strSql.Append(" codProduto, ");
                strSql.Append(" Quantidade, ");
                strSql.Append(" ValorUnitarioVenda, ");
                strSql.Append(" CodCarrinhoCompras ");
                strSql.Append(" ) ");
                strSql.Append(" VALUES (");
                strSql.Append(" " + _vo.codProduto + " , ");
                strSql.Append(" " + _vo.Quantidade + " , ");
                strSql.Append(" " + UtilsNumber.FormataDecimal(_vo.ValorUnitarioVenda) + ",  ");
                strSql.Append(" " + _vo.CodCarrinhoCompras + "  )");


                objDO = new SisEagleDO.SisEagleDO();

                // executa comando e retorna o número de linhas afetadas.
                return objDO.ExecutaQuery(strSql.ToString());
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Atualiza os registros do banco e retorna o número de linhas afetadas.
        /// </summary>
        /// <param name="_vo">objetos vo do banco</param>
        /// <returns>int</returns>
        public int Update(SisEagleVO.ControleVendasVO _vo)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" UPDATE  ControleVendas  ");
                strSql.Append(" SET ");

                strSql.Append("   codProduto =   " + _vo.codProduto + " ,  ");
                strSql.Append("   Quantidade =   " + _vo.Quantidade + " ,  ");
                strSql.Append("   ValorUnitarioVenda =   " + UtilsNumber.FormataDecimal(_vo.ValorUnitarioVenda) + ",   ");
                strSql.Append("   CodCarrinhoCompras =   " + UtilsNumber.FormataDecimal(_vo.CodCarrinhoCompras) + "   ");

                strSql.Append(" WHERE ( CodVenda =   " + _vo.CodVenda + "  ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa comando e retorna o número de linhas afetadas.
                return objDO.ExecutaQuery(strSql.ToString());
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

        /// <summary>
        /// Deleta os registros do banco e retorna o número de linhas afetadas.
        /// </summary>
        /// <param name="_vo">objetos vo do banco</param>
        /// <returns>int</returns>
        public int Delete(SisEagleVO.ControleVendasVO _vo)
        {
            try
            {
                strSql = new StringBuilder();
                strSql.Append(" DELETE FROM ControleVendas  ");
                strSql.Append(" WHERE ( CodVenda = " + _vo.CodVenda + " ) ");

                objDO = new SisEagleDO.SisEagleDO();

                // executa comando e retorna o número de linhas afetadas.
                return objDO.ExecutaQuery(strSql.ToString());
            }
            catch (Exception er)
            {
                throw new Exception("Aconteceu um erro:" + er.Message.ToString());
            }
            finally
            {
                strSql = null;
            }
        }

    }

}
